数据库访问 (ADO.NET, Entity Framework)
概述
在现代软件开发中,数据库访问是一个至关重要的部分。无论是存储用户信息、产品数据还是日志记录,应用程序都需要与数据库进行交互。C# 提供了多种方式来实现数据库访问,其中最常用的是 ADO.NET 和 Entity Framework。本教程将详细介绍这两种技术,并通过代码示例和实践练习帮助你掌握它们。
ADO.NET 简介
什么是 ADO.NET?
ADO.NET(ActiveX Data Objects .NET)是 .NET 框架中用于数据访问的核心组件。它提供了一组类和接口,用于连接数据库、执行 SQL 命令、处理结果集等操作。ADO.NET 是基于连接的,这意味着它在执行数据库操作时需要保持与数据库的连接。
ADO.NET 的核心组件
- Connection:用于建立与数据库的连接。
- Command:用于执行 SQL 命令(如 SELECT、INSERT、UPDATE、DELETE)。
- DataReader:用于从数据库中读取数据,通常用于只读操作。
- DataAdapter:用于填充 DataSet 或 DataTable,并处理数据的更新。
- DataSet 和 DataTable:用于在内存中存储和操作数据。
示例:使用 ADO.NET 连接和查询数据库
using System;
using System.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
string query = "SELECT * FROM Customers";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(query, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"{reader["CustomerID"]} - {reader["CompanyName"]}");
}
reader.Close();
}
}
}
实践练习
- 创建一个控制台应用程序,使用 ADO.NET 连接到本地 SQL Server 数据库。
- 编写代码,查询数据库中的某个表,并将结果输出到控制台。
- 尝试插入、更新和删除操作,并验证结果。
Entity Framework 简介
什么是 Entity Framework?
Entity Framework(EF)是 .NET 中的一个对象关系映射(ORM)框架。它允许开发者使用 .NET 对象来操作数据库,而不需要编写大量的 SQL 代码。EF 支持多种数据库,包括 SQL Server、MySQL、PostgreSQL 等。
Entity Framework 的核心概念
- DbContext:表示与数据库的会话,用于查询和保存数据。
- DbSet:表示数据库中的一个表,用于执行 CRUD 操作。
- LINQ to Entities:用于查询数据库的 LINQ 扩展。
示例:使用 Entity Framework 查询数据库
using System;
using Microsoft.EntityFrameworkCore;
using System.Linq;
public class MyDbContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;");
}
}
public class Customer
{
public int CustomerID { get; set; }
public string CompanyName { get; set; }
}
class Program
{
static void Main()
{
using (var context = new MyDbContext())
{
var customers = context.Customers.ToList();
foreach (var customer in customers)
{
Console.WriteLine($"{customer.CustomerID} - {customer.CompanyName}");
}
}
}
}
实践练习
- 创建一个控制台应用程序,使用 Entity Framework 连接到本地 SQL Server 数据库。
- 定义一个实体类,映射到数据库中的某个表。
- 编写代码,使用 LINQ 查询数据库,并将结果输出到控制台。
- 尝试插入、更新和删除操作,并验证结果。
ADO.NET 与 Entity Framework 的比较
何时使用 ADO.NET?
- 需要手动控制 SQL 语句:如果你需要编写复杂的 SQL 查询或存储过程,ADO.NET 是一个不错的选择。
- 性能要求高:ADO.NET 直接与数据库交互,性能通常比 ORM 框架更好。
- 需要处理大量数据:ADO.NET 的 DataReader 是只读的,适合处理大量数据。
何时使用 Entity Framework?
- 简化数据库操作:如果你希望通过 .NET 对象来操作数据库,减少 SQL 代码的编写,EF 是一个很好的选择。
- 快速开发:EF 提供了许多内置功能,如迁移、延迟加载等,可以加速开发过程。
- 跨数据库支持:EF 支持多种数据库,适合需要跨数据库平台的项目。
总结
本教程介绍了如何使用 ADO.NET 和 Entity Framework 进行数据库访问。ADO.NET 提供了直接与数据库交互的能力,适合需要手动控制 SQL 语句和性能要求高的场景。而 Entity Framework 则通过 ORM 的方式简化了数据库操作,适合快速开发和跨数据库平台的项目。
通过实践练习,你应该能够掌握这两种技术的基本用法,并能够在实际项目中灵活应用。
下一步
- 深入学习:探索更多高级功能,如事务处理、并发控制、数据库迁移等。
- 实践项目:尝试在实际项目中使用 ADO.NET 或 Entity Framework,解决实际问题。
- 学习其他数据库技术:如 Dapper、NHibernate 等,扩展你的数据库访问技能。
希望本教程对你有所帮助,祝你在数据库访问的学习和实践中取得成功!